;---------------------------------PROGRAMA PARA USAR PIC12F509 COMO OSCILADOR SIMPLE-----------------------------------------
;
; Este programa permite al pic trabajar como un reloj simple para reemplazar al 555 en circuito de temporizador
;-------------------------------------LIBRERIAS----------------------------------------
		list	p=12F509
		#include	<p12f509.inc>		
		 __CONFIG    _MCLRE_ON & _CP_OFF & _WDT_OFF & _IntRC_OSC
		
;---------------------------VARIABLES Y VECTOR DE INICIO-------------------------------
d1	equ	0x07
d2	equ	0x08
d3	equ	0x09
d1m	equ	0x0A
d2m	equ	0x0B		

RESET   org    0x000           ; effective reset vector
        movwf   OSCCAL          ; update OSCCAL with factory cal value 	
		goto	INICIO
;--------------------------------RUTINAS DE TIEMPO-------------------------------------
TIMEms				;RUTINA PARA 0.2 SEGUNDOS		
	movlw	0x3E
	movwf	d1m
	movlw	0x9D
	movwf	d2m
TIME_0ms
	decfsz	d1m, f
	goto	$+2
	decfsz	d2m, f
	goto	TIME_0ms				
	goto	$+1
	nop		
	retlw	0
		
TIME				;RUTINA PARA MINUTO
	movlw	0x11
	movwf	d1
	movlw	0x66
	movwf	d2
	movlw	0x42
	movwf	d3
TIME_0
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	$+2
	decfsz	d3, f
	goto	TIME_0
	retlw	0										
;--------------------------------------PROGRAMA PRINCIPAL------------------------------------------------
	
INICIO	
			clrf	GPIO		;Limpia y pone a cero pines de salida
			movlw	b'11000000'	;Programamos todos los pines como..
			tris	GPIO		;..salidas
			movlw	b'00000000'	;dejamos la relacin 1:2 ..
			option				;..para el Timer0
			movlw	b'11000000'	;Enviamos un cero al pin GP0 que conectado a los pines PL de los 74HC190.. 
			movwf	GPIO		;..permite leer numero programado en sus entradas
			call	TIMEms		;Durante 0.2 segundos
			movlw	b'11000001'	;Luego de esto se pone un 1 (se activa), al pin GP0
			movwf	GPIO		;para permitir que contadores 74HC190 puedan mostrar el numero programado en sus salidas e inicie conteo
CICLO							;Ciclo de RELOJ para contar una oscilacin por minuto	
			movlw	b'11000101'	;se activa el pin GP2 ..
			movwf	GPIO		;..conectado al pin CLK del 74HC190 de las unidades
			call	TIME		;durante 30 segundos
			movlw	b'11000001'	;de desactiva el pin GP2..
			movwf	GPIO		;..equivalente a ciclo bajo de la onda cuadrada
			call	TIME		;durante 30 segundos
			goto	CICLO		;se repite el ciclo						
			
	
	END